home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / fbug68k.arc / COLDUNIX.C < prev    next >
C/C++ Source or Header  |  1989-09-29  |  5KB  |  205 lines

  1. #include"textdef.h"
  2.  
  3. /* ************************************************************** */
  4. /*
  5. This is the initialization routine. The cold start will come here. 
  6. First the duart is initialized, then the register table for the mpu
  7. registers. Next the symbol, followed by the break, table are
  8. initialized. The mainloop is called and the monitor is off and
  9. running.
  10. */
  11. /* ************************************************************** */
  12.  
  13. main()
  14. {
  15. extern struct breakelem brtable[];
  16. extern struct symbelem symb[];
  17. extern struct regelem mpu[];
  18. register int i,j,k,l;
  19.  
  20. /* ******************************************** */
  21. /* ONLY REQUIRED FOR THE MEMORY SIMULATOR    */
  22.     put32(VBRLOC,1);
  23. /* ******************************************** */
  24.  
  25.  
  26.     if (get32(VBRLOC) == 1)
  27.     {
  28.     put32(VBRLOC,0);
  29.     i = 0;
  30.     mpu[i].value = USERPCLOC;
  31.     mpu[i++].name = p_c;
  32.     mpu[i].value = SRSTART;
  33.     mpu[i++].name = s_r;
  34. #if(DEVICE>=68020)
  35.     mpu[i++].name = "=";
  36. #endif
  37.     mpu[i].value = USERUSPLOC;
  38.     mpu[i++].name = usp;
  39. #if(DEVICE<68020)
  40.     mpu[i++].name = "=";
  41. #endif
  42.     mpu[i].value = USERMSPLOC;
  43.     mpu[i++].name = msp;
  44. #if(DEVICE<68020)
  45.     mpu[i].value = USERSSPLOC;
  46.     mpu[i++].name = ssp;
  47. #else
  48.     mpu[i].value = USERISPLOC;
  49.     mpu[i++].name = isp;
  50. #endif
  51.     mpu[i].value = USERVBRLOC;
  52.     mpu[i++].name = vbr;
  53.     j = i;
  54.     mpu[i++].name = cac;
  55.     mpu[i++].name = caa;
  56.     mpu[i++].name = sfc;
  57.     mpu[i++].name = dfc;
  58.     mpu[i++].name = "=";
  59.     mpu[i++].name = d_0;
  60.     mpu[i++].name = d_1;
  61.     mpu[i++].name = d_2;
  62.     mpu[i++].name = d_3;
  63.     mpu[i++].name = d_4;
  64.     mpu[i++].name = d_5;
  65.     mpu[i++].name = d_6;
  66.     mpu[i++].name = d_7;
  67.     mpu[i++].name = "=";
  68.     mpu[i++].name = a_0;
  69.     mpu[i++].name = a_1;
  70.     mpu[i++].name = a_2;
  71.     mpu[i++].name = a_3;
  72.     mpu[i++].name = a_4;
  73.     mpu[i++].name = a_5;
  74.     mpu[i++].name = a_6;
  75.     k=i;
  76. #if(DEVICE<68020)
  77.     mpu[i].value = USERSSPLOC;
  78. #else
  79.     mpu[i].value = USERISPLOC;
  80. #endif
  81.     mpu[i++].name = a_7;
  82. #if(DEVICE==68030)
  83.     mpu[i++].name = "=";
  84.     mpu[i++].name = "=";
  85.     mpu[i].value = 1;
  86.     mpu[i++].name = crp;
  87.     mpu[i++].name = "crpl";
  88.     mpu[i].value = 1;
  89.     mpu[i++].name = srp;
  90.     mpu[i++].name = "srpl";
  91.     mpu[i++].name = "=";
  92.     mpu[i++].name = tc;
  93.     mpu[i++].name = tt_0;
  94.     mpu[i++].name = tt_1;
  95.     mpu[i++].name = mmusr;
  96. #endif
  97. #if(DEVICE==68040)
  98.     mpu[i++].name = "=";
  99.     mpu[i++].name = "=";
  100.     mpu[i].value = 1;
  101.     mpu[i++].name = urp;
  102.     mpu[i++].name = "urpl";
  103.     mpu[i].value = 1;
  104.     mpu[i++].name = srp;
  105.     mpu[i++].name = "srpl";
  106.     mpu[i++].name = tc;
  107.     mpu[i++].name = "=";
  108.     mpu[i++].name = dtt_0;
  109.     mpu[i++].name = dtt_1;
  110.     mpu[i++].name = itt_0;
  111.     mpu[i++].name = itt_1;
  112.     mpu[i++].name = mmusr;
  113. #endif
  114.     l = i;
  115.  
  116. #if(DEVICE==68040 || COPROCESSOR==TRUE)
  117.     mpu[i++].name = "=";
  118.     mpu[i++].name = "=";
  119.     mpu[i].value = 0;
  120.     mpu[i++].name = "FPCR ";
  121.     mpu[i].value = 0;
  122.     mpu[i++].name = "FPSR ";
  123.     mpu[i].value = 0;
  124.     mpu[i++].name = "FPIAR ";
  125.     l = i;
  126.     mpu[i++].name = "=";
  127.     mpu[i++].name = "FP0  ";
  128.     mpu[i++].name = "fp01 ";
  129.     mpu[i++].name = "fp02 ";
  130.     mpu[i++].name = "FP1  ";
  131.     mpu[i++].name = "fp11 ";
  132.     mpu[i++].name = "fp12 ";
  133.     mpu[i++].name = "FP2  ";
  134.     mpu[i++].name = "fp21 ";
  135.     mpu[i++].name = "fp22 ";
  136.     mpu[i++].name = "FP3  ";
  137.     mpu[i++].name = "fp31 ";
  138.     mpu[i++].name = "fp32 ";
  139.     mpu[i++].name = "FP4  ";
  140.     mpu[i++].name = "fp41 ";
  141.     mpu[i++].name = "fp42 ";
  142.     mpu[i++].name = "FP5  ";
  143.     mpu[i++].name = "fp51 ";
  144.     mpu[i++].name = "fp52 ";
  145.     mpu[i++].name = "FP6  ";
  146.     mpu[i++].name = "fp61 ";
  147.     mpu[i++].name = "fp62 ";
  148.     mpu[i++].name = "FP7  ";
  149.     mpu[i++].name = "fp71 ";
  150.     mpu[i++].name = "fp72 ";
  151. #endif
  152.     mpu[i].name = LASTCMD;
  153.  
  154.     for(i=j;mpu[i].name != LASTCMD;i++)
  155.         if(i!=k && i!=k+3 && i!=k+5 && i<=l)
  156.             mpu[i].value = 0;
  157.  
  158.  
  159.     for (i = 0;ROMSYMB[i] != ENDSTR;i++)
  160.         symb[0].name[i] = ROMSYMB[i];
  161.     symb[0].value = ROMLOC;
  162.     for (i = 1;i < MAXSYMBOL;i++)
  163.     {
  164.         symb[i].name[0] = ENDSTR;
  165.         symb[i].value = 0;
  166.     }
  167.  
  168.     for (i = 0,j = 0;i < MAXBR;i++)
  169.     {
  170.         brtable[i].count = -1;
  171.         brtable[i].tempcount = 0;
  172.         brtable[i].address = 0; brtable[i].inst1 = 0;
  173.         brtable[i].inst2 = 0;
  174.     }
  175.  
  176.  
  177.     put8(HOST + CRX,0x30);
  178.     put8(HOST + CRX,0x20);
  179.     put8(HOST + CRX,0x10);
  180.     put8(HOST + CSRX,0xbb);
  181.     put8(HOST + MR1X,0x13);
  182.     put8(HOST + MR2X,0x07);
  183.     put8(HOST + CRX,0x05);
  184.     put8(TERMINAL + CRX,0x30);
  185.     put8(TERMINAL + CRX,0x20);
  186.     put8(TERMINAL + CRX,0x10);
  187.     put8(TERMINAL + IVR,0x0f);
  188.     put8(TERMINAL + IMR,0x00);
  189.     put8(TERMINAL + ACR,0x00);
  190.     put8(TERMINAL + CTUR,0x00);
  191.     put8(TERMINAL + CTLR,0x02);
  192.     put8(TERMINAL + OPCR,0x00);
  193.     put8(TERMINAL + CSRX,0xbb);
  194.     put8(TERMINAL + MR1X,0x13);
  195.     put8(TERMINAL + MR2X,0x07);
  196.     put8(TERMINAL + CRX,0x05);
  197.     }
  198.     print("Copyright Motorola Inc. 1989   All Rights Reserved\n");
  199.     print("Fbug68 Monitor/Debugger Version 1.1 - 9/28/89 \n");
  200.     mainloop();
  201. }
  202.  
  203. /* *************************************************************** */
  204.  
  205.